Typically, a data storage system operates as a large storage device for one or more external server computers (or simply servers) by responding to block-based input/output (I/O) requests that direct the data storage system to perform load and store operations. Examples of block-based communications include Block Mux Channel communications, Small Computer Systems Interface (SCSI) commands, Fibre Channel communications, Enterprise System Connection (ESCON) signals, Fibre Connectivity (FICON) Channel communications, and the like.
A typical server provides services (e.g., client-oriented access to a data storage system) to one or more other computers called clients. In contrast to block-based communications which servers and data storage systems typically use to communicate with each other, clients and servers typically communicate with each other using client-oriented and server-oriented communications (hereinafter, generally referred to as client-oriented communications). Examples of client-oriented communications include Transmission Control Protocol/Internet Protocol (TCP/IP) communications, Gigabit Ethernet signals, Asynchronous Transfer Mode (ATM) communications, and the like.
In one configuration, a client can retrieve data from a data storage system by sending a client-oriented request (e.g., a TCP/IP signal) to a server (i.e., a host). The server then provides a block-based request (e.g., a SCSI signal) for one or more blocks of data to the data storage system. Next, the data storage system provides the requested data blocks (e.g., a SCSI signal) to the server in response to the block-based request. The server provides that data to the client I the form of a file-based response (e.g., a TCP/IP signal). Further details of this configuration will now be provided with reference to FIG. 1.
FIG. 1 shows a conventional configuration 20 having a data storage system 22, servers 24-1, 24-2 (collectively, servers 24), an external network 26 (e.g., the Internet), a transmission medium 28 that connects the servers 24 to the external network 26, and a transmission medium 30 that connects the servers 24 to the data storage system 22.
The servers 24 provide data storage services to devices of the external network 26 (e.g., clients) by operating as a front-end to the data storage system 22. For example, the servers 24 can load and store blocks of data within the data storage system 22 in response to file-based commands (i.e., provide file-based access to blocks of data within the data storage system 22). Moreover, the servers 24 can operate as database engines which access respective databases within the data storage system 22. As such, a client can send a file-based communication (e.g., a database query in the form of a TCP/IP signal) to one of the servers 24 through the transmission medium 28 to access a database of the data storage system 22. In response to the file-based communication, that server 24 can send one or more block-based commands (e.g., Fibre Channel signals) to the data storage system 22 through the transmission medium 30 to retrieve and query that database, and then provide query results back to the client.
As shown in FIG. 1, the data storage system 22 includes a set of network interface cards 32-1, 32-2 (NICs 32), front-end circuitry 34, a cache 36, back-end circuitry 38 and a set of disk drives 40 having blocks 42 for storing data. The data storage system 22 further includes a set of connections 44 which connects the NICs 32 to the front-end circuitry 34. Additionally, the data storage system 22 includes a bus 46 that connects the front-end circuitry 34, the cache 36 and the back-end circuitry 38 together. Furthermore, the data storage system 22 includes a set of connections 48 that connects the back-end circuitry 38 and the set of disk drives 40 together.
In general, the cache 36 operates as a buffer for data exchanged between the servers 24 and the set of disk drives 40. Additionally, the front-end circuitry 34 operates as an interface between the servers 24 and the cache 36. Similarly, the back-end circuitry 38 operates as an interface between the cache 36 and the set of disk drives 40.
When a NIC 32 receives a block-based signal from a server 24, that NIC 32 conveys that block-based signal to the front-end circuitry 34. This conveyance typically involves changing the format of the signal, e.g., receiving a serial fiber optic signal from the server 34 and converting it into parallel-bus electrical signals for use by the front-end circuitry 34, or vice versa. For example, when a server 24 writes data to the data storage system 22, a NIC 32 receives and converts that data into a format suitable for use by the front-end circuitry 34, and then provides that data to the front-end circuitry 34 (e.g., from a serial fiber optic signal to an electrical signal for a parallel bus). The front-end circuitry 34 then buffers the data in the cache 36 and notifies the back-end circuitry 38 of the arrival of the data. The back-end circuitry 38 then copies the data from the cache 36 to the set of disk drives 40.
To read data from the data storage system 22, the server 24 sends a block-based read command to the data storage system 22. A NIC 32 converts the read command into a format suitable for use by the front-end circuitry 34, and then provides that that command to the front-end circuitry 34 (e.g., from a serial fiber optic signal to an electrical signal for a parallel bus). Next, the front-end circuitry 34 notifies the back-end circuitry 38 of the command. In response, the back-end circuitry 38 transfers a copy of the data from the set of disk drives 40 to the cache 36. The front-end circuitry 34 then transfers the data from the cache 36 to the server 24 through the NIC 32 which provides the data in a format (e.g., a fiber optic signal) which is suitable for use by the server 24.